package com.cn.wanxi.servlet;

import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.model.NewsModel;
import com.cn.wanxi.service.*;
import com.cn.wanxi.service.impl.CompanyServiceImpl;
import com.cn.wanxi.service.impl.NavServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 后台
 * 三层：
 * 数据层 dao  存放数据
 * 控制层 servlet  页面控制层和页面一一对应
 * 逻辑层 service  封装逻辑代码
 * 实体层
 * mvc 前台+后台
 * 视图层  v   view  视图  渲染页面
 * c  controller  控制层  servlet一样
 * <p>
 * m  model  实体层  model
 * <p>
 * 用servlet框架--必须要引入servlet的jar包
 * java 后面所有的框架都是基于servlet ，所以tomcat  里面有最基础的jar包
 */
//这里的地址一定是唯一的，而且一定有斜杠
@WebServlet("/home")//地址，前端访问后台的地址,servlet 3.0就推荐大家使用
public class HomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


//        得到公司信息数据，应该转向服务逻辑层
        ICompanyService companyService = new CompanyServiceImpl();
        CompanyModel companyModel = companyService.getCompanyModel();
//        java的四大作用域
//        就是传递单个数据
        req.setAttribute("company", companyModel);//key-value的形式  键值对


//        导航会有六个不同的对象，然后一起发送到前端页面
//        第一：数组，第二：：集合,一般情况下，如果是多个对象 用集合，如果是基本类型 用数组
        //空集合，目的，就是为了封装所有的导航对象
//        List<NavModel> navModelList = new ArrayList<>();
        INavService navService=new NavServiceImpl();
        List<NavModel> navModelList=navService.getNavModelListForHome();
//        举例：封装一个导航对象
//        NavModel navModel = new NavModel();
//        navModel.setHref("fdasd");
//        navModel.setTitle("fdasfas");
//        navModelList.add(navModel);//将导航加入到list
//        将list封装到req的作用域
        req.setAttribute("navModelList", navModelList);


//        新闻信息
        NewsService newsService=new NewsService();
        List<NewsModel> newsModelList=newsService.getNewsModelListForHome();
        req.setAttribute("newsModelList",newsModelList);
//        map  hashmap  hashtable  json  session  application
//        数据页面转发
        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);
    }
}
